xend: Tear down domain if device hotplug fails during startup
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 24 May 2007 13:05:58 +0000 (14:05 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Thu, 24 May 2007 13:05:58 +0000 (14:05 +0100)
If creating an unmanaged guest (eg xm create), if device hotplug fails
during the startup of the guest, then the guest will be torn down
again. If creating and starting a managed guest (eg xm new && xm
start), then if device hotplug fails, the still born guest gets left
in 'paused' state. This confuses users no end, who go an unpause and
then get all upset when it shortly crashes (due to lack of disk or
network devices).

The attached patch fixes XenDomain.py's domain_start() method so that
if waitForDevices() fails, then the entire domain is torn down. This
is the same approach used in xm create.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
tools/python/xen/xend/XendDomain.py

index d210aa634bdeac7ab263e556d2beb009b2064f65..f507104db2fa9a7edac2df5cc33a4f74d6a9ec05 100644 (file)
@@ -985,10 +985,16 @@ class XendDomain:
             dominfo.start(is_managed = True)
         finally:
             self.domains_lock.release()
-        dominfo.waitForDevices()
+
+        try:
+            dominfo.waitForDevices()
+        except Exception, ex:
+            log.warn("Failed to setup devices for " + str(dominfo) + ": " + str(ex))
+            dominfo.destroy()
+            raise
+
         if not start_paused:
             dominfo.unpause()
-        
 
     def domain_delete(self, domid):
         """Remove a managed domain from database